import lookup from "./lookup";
/**
 * 将tokens数组改为dom字符串,并将渲染dom字符串
 * @param {编译后的tokens数组} tokens 
 * @param {需要渲染的数据} data 
 */
export default function renderTemplate (tokens, data) {
    // 结果字符串
    let resultStr = ''
    for (let i = 0; i < tokens.length; i++) {
        let token = tokens[i];
        if (token[0] == 'text') {
            resultStr += token[1]
        } else if (token[0] == 'name') {
            // 处理属性里面包含.符号的情况，再进行追加
            resultStr += lookup(data, token[1])
        } else if (token[0] == '#') {
            resultStr += parseArray(token, data)
        }
    }
    return resultStr
}

function parseArray (token, data) {
    var result = ''
    var v = lookup(data, token[1])
    for (let i = 0; i< v.length; i++) {
      const element = v[i];
    // 将数组内的子tokens传入，（#, arrayKey, arrayValue）中的第二项也是一个tokens 再将数据项传入
    result += renderTemplate(token[2], {
          ...element,
          '.': element
      })
    }
    return result
}